iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 2
3
Modern Web

美麗的邂逅-與安室....伊春系列 第 2

框架中的紅塵 (framework)

  • 分享至 

  • xImage
  •  
善惡到頭終有報,只争來早與來遲。

先介紹框架 (framework) 。框架是 Java 世界裡很重要的概念, 也是Java的特色。
程式要有清晰且設想周全的結構有幾個目的:

  1. 程式碼再用;(以致可以省時、省工...)
  2. 易讀與維護。(以致可以正確、除錯、穩定、容易增加功能、維護...)

          這些都是程式好壞的關鍵。以往寫程式時,使用函式庫 (library), 函式庫可以視作 “以前寫好的程式的集合”,如果能夠相對簡單的應用以前寫好的程式碼是一個重點。輸入/輸出定義清楚,可以 “掌握”,重覆利用過去的努力,這是一個傳統的方向;而 “框架” 則有著不同的特性,我們不是 “掌握” 框架(我們不是把框架 "包" 在應用裡面),而是 “被” 框架掌握(而是我們的應用被包在框架裡面)。我們試圖建造一個環境(框架)可以應付未來的需要。
          舉一個例子來說,我們要蓋一個家,我們可以買冰箱,冷氣…一個個的傢俱就像是函數,有明確的用途,形狀,我們可以不用管內部結構,直接插電使用,對了,電,以往的程式架構,就像是一邊準備家俱,一邊蓋房屋結構(含水電配管),依著傢俱的大小,我們設計房子的結構,設備與房子很貼合,很舒適。但是,若這個房子若是用以出租,將來舊人要搬走,新人要遷入,那舊人搬走了,房子是對原先的房客,量身製作的,新房客要添置設備,就頗受限制。
          框架是另一個方式,先把房子蓋好,考慮將來會用不同的冰箱,不同的冷氣,厨俱…,將這個 “未來” 的需要,考慮在房子的設計之中,插頭的佈置,水電瓦斯一應俱全。因此,新房客要入住時,房東提供一些規範,房客依著規範,添置傢俱,即可安裝使用。當然,有優點就有缺點,規範就是限制,若是房子建構時,有考慮不周之處,那問題就更大。而水,電,瓦斯都在暗管,美是美,要改時就不是那麼容易。而且,若是對管線設計不熟,要改不易,有時要用都難。
          如果再進一步推敲,也可以把房屋中 "電路系統","水路系統","隔間系統"視作不同的框架,這也顯明,若使用一個以上的框架,各框架之間可能隱含一些 "相生相剋" 的關係。
          因此框架有時候像是一個平台,或是一個有 “潛在規則” 運行的一個世界,常常,道理有可能不是那麼連貫,邏輯不能推到很基本的層次(除非你真是洞悉事理,識見卓越),而是在比較抽像的層程,以Spring boot為例,在短短的幾行程式裡,就可以在 Browser 中輸入 localhost:/hello 得到 Hello! This is Faust speaking. 的回應,(詳細的操作在往後的章回中詳談)。

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello! This is Faust speaking.";
    }

}

          似乎,可以從文字上很容易理解,@RestController說明這是Restful(不懂?沒關係,先繼續看下去,或是,請出God (更正,Google)也行)。而 @GetMapping(“/hello”) 說明程式針對 “/hello” 回應。看似邏輯清楚,但是對於一個追跟究底的我,這是完全不能接受的。叫 “阿呆” 的不一定笨,叫 “天才” 的也不一定聰明,為什麼加上 “Rest” 就是 “Restful”,加上 "GetMapping" 就能處理 "Get" 要求,這中間肯定是暗藏玄機的。其實Spring Boot框架己經作了許許多多(我們知道或不知道)的事,我們看見的指令只是冰山一角,框架像是宇宙的操控者,進行著我們可能明白或不明白的潛規則,只是讓因果 “看似很淺顯”。就好像 “善有善報”,這善行與善報之間,有著無窮的道理與變化。這讓我想到,這宇宙紅塵,或許就是一個 “很大很大、看似無邊無際的框架”。


上一篇
緣起 (faust)
下一篇
網, 網, 到處都是網 (web-server)
系列文
美麗的邂逅-與安室....伊春30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言